<html>
<head><meta charset="utf-8"><title>staged proposals · t-lang/meta · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/index.html">t-lang/meta</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html">staged proposals</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="215382429"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/215382429" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#215382429">(Nov 02 2020 at 21:36)</a>:</h4>
<p>So <span class="user-mention" data-user-id="239881">@Josh Triplett</span> and I have been talking a bit about staging and proposals and we drew up a <a href="https://hackmd.io/YQAYm_hiS_KWCsid5sRVjw?edit">refined proposal</a>. The main ideas are:</p>
<ul>
<li>Permit a second+FCP on a proposal to go ahead and create a stream for brainstorming, rather than full checkboxes. The stream would be tagged as "brainstorming".</li>
<li>Collaborate towards a charter, at which point checkboxes are appropriate. This is also the step that enables code to land in nightly. Charter basically describes "possible solutions" as well as a "preferred solution". </li>
<li>Once charter lands, can work towards the full RFC. Code can also start to land.</li>
<li>Once RFC is opened + implementation is evaluation, we are in "evaluation" and finally "stabilization".</li>
</ul>
<p>This is intended to help line up with the libs + compiler processes. After cleaning up the above hackmd I hope to shop it around to those folks. (I guess that compiler doesn't need most of this, it's mainly the "seconding" that aligns, but I think the rough model in some simplified form may also fit there.)</p>
<p>(cc <span class="user-mention" data-user-id="219696">@XAMPPRocky</span>, <span class="user-mention" data-user-id="116083">@pnkfelix</span>, <span class="user-mention" data-user-id="204346">@Ashley Mannix</span>)</p>



<a name="215384042"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/215384042" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#215384042">(Nov 02 2020 at 21:50)</a>:</h4>
<p>Ideally, libs should be able to use this process unmodified.</p>
<p>Compiler would probably skip the RFC stage for most proposals (and charter may be as small as "a paragraph written in the initial proposal"). Some things would go through impl then stable (such as -Z flags or other things that have a nightly-only gating mechanism), while insta-stable things (like architectural changes to the compiler) would move directly to stable when implemented.</p>



<a name="215652283"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/215652283" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ashley Mannix <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#215652283">(Nov 04 2020 at 23:02)</a>:</h4>
<p>I think this exact process could be applied to Libs <span aria-label="+1" class="emoji emoji-1f44d" role="img" title="+1">:+1:</span> The way I think things currently tend to work is:</p>
<ul>
<li>Somebody in the community comes up with a pre-RFC that they post to <a href="http://users.rust-lang.org">users.rust-lang.org</a> and get some input on.</li>
<li>Topics with a big design space sometimes lead to new rounds of pre-RFCs or spawn off alternative proposals.</li>
<li>Once there seems to be some traction they might open an RFC proper and start getting a different kind of feedback.</li>
</ul>
<p>With this process we could either skip the pre-RFC phase altogether in favor of a proposal, or instead of promoting that to an RFC, it becomes a charter to see that through to a full RFC and stabilization.</p>
<p>One thing I am wondering is whether our new takes on these design/development phases are producing public RFCs a bit too late. I think we don't tend to get complete feedback on proposals until there's an RFC and a forcing function to give complete feedback (it'll get stabilized without your input if you don't comment). That seems to have played out a bit in the safe transmute proposal, where the group worked for a long time exploring the design space and came up with a complete and extensive solution that satisfied all the constraints they'd discovered, but was based on a few assumptions that were deemed unsuitable for a standard library feature.</p>
<p>Maybe we just need to make sure we give useful feedback throughout the brainstorming process by checking in on them. That might be covered by the checkpoints between stages.</p>



<a name="215652518"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/215652518" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ashley Mannix <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#215652518">(Nov 04 2020 at 23:05)</a>:</h4>
<p>The main thing I'd love to try avoid in Libs is having a single person "own" an RFC when possible, because the burden of dealing with feedback on your own is heavy. It seems like stages would help there too</p>



<a name="215652978"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/215652978" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#215652978">(Nov 04 2020 at 23:10)</a>:</h4>
<p><span class="user-mention silent" data-user-id="204346">Ashley Mannix</span> <a href="#narrow/stream/196563-t-lang.2Fmeta/topic/staged.20proposals/near/215652518">said</a>:</p>
<blockquote>
<p>The main thing I'd love to try avoid in Libs is having a single person "own" an RFC when possible, because the burden of dealing with feedback on your own is heavy. It seems like stages would help there too</p>
</blockquote>
<p>/me has been avoiding <a href="https://github.com/rust-lang/rfcs/pull/2988">https://github.com/rust-lang/rfcs/pull/2988</a> for a while</p>



<a name="215870947"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/215870947" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#215870947">(Nov 06 2020 at 16:38)</a>:</h4>
<p><span class="user-mention" data-user-id="204346">@Ashley Mannix</span> yes, I agree, that is a goal for project groups etc in general</p>



<a name="215871005"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/215871005" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#215871005">(Nov 06 2020 at 16:38)</a>:</h4>
<p>(avoiding a single owner)</p>



<a name="215871017"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/215871017" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#215871017">(Nov 06 2020 at 16:38)</a>:</h4>
<p>though i'm not sure if it always works out</p>



<a name="215871050"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/215871050" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#215871050">(Nov 06 2020 at 16:38)</a>:</h4>
<p>that said, good to hear that this structure seems like it could fit, I'd like to take some time and expand the explanation a bit</p>



<a name="215871110"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/215871110" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#215871110">(Nov 06 2020 at 16:39)</a>:</h4>
<p>one of the questions we need to pin down I think is the tracking issue, but I think i've decided we should just be using a single tracking issue in the rust repo and just try to apply the policy we've been using on lang-team tracking issues, where we discourage general comments and use it more for updates</p>



<a name="216028572"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/216028572" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ashley Mannix <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#216028572">(Nov 08 2020 at 22:27)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> Are these the tracking issues for the project groups themselves? Would we like to try follow a similar pattern for feature tracking issues too? Mixing general discussion with status updates isn't always the best experience in GitHub</p>



<a name="216091561"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/216091561" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#216091561">(Nov 09 2020 at 14:35)</a>:</h4>
<p>So the lang-team has issues for each "project group", but what I was proposing is basically repurposing <em>tracking issues</em> so that they are not a forum for discussion, only for status updates. Probably we should include explicit instructions on how to notify folks of problems or raise comments/questions about the design.</p>



<a name="216091580"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/216091580" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#216091580">(Nov 09 2020 at 14:35)</a>:</h4>
<p>I'd then remove the lang-team issues and just use the main tracking issue</p>



<a name="216091600"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/216091600" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#216091600">(Nov 09 2020 at 14:35)</a>:</h4>
<p>(perhaps with some labels or other metadata)</p>



<a name="216091617"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/216091617" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#216091617">(Nov 09 2020 at 14:35)</a>:</h4>
<p><span class="user-mention" data-user-id="204346">@Ashley Mannix</span> <span aria-label="point up" class="emoji emoji-1f446" role="img" title="point up">:point_up:</span></p>



<a name="220095283"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/220095283" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ashley Mannix <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#220095283">(Dec 16 2020 at 09:49)</a>:</h4>
<p>Sorry for taking so long to circle back around! So we'd possibly use a combination of <code>C-tracking-issue</code> <code>T-{team}</code> <code>C-project-group</code> <code>PG-{group}</code>? It all makes me wish GitHub queries supported arbitrary unions, intersections and negations of labels <span aria-label="smile" class="emoji emoji-1f642" role="img" title="smile">:smile:</span></p>



<a name="220100824"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/196563-t-lang/meta/topic/staged%20proposals/near/220100824" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/196563-t-lang/meta/topic/staged.20proposals.html#220100824">(Dec 16 2020 at 10:48)</a>:</h4>
<p>no worries, I've been quite slow on following up here, I still have in my head to make this into a concrete proposal</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>